<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <script>

    if (window.console === undefined){
        console = {};
        console.log = function(){};
    };

    window._waf_is_mobile = false;

    (function(a) {
        if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))){
            window._waf_is_mobile = true;
        }
    })(navigator.userAgent || navigator.vendor || window.opera);

    var requestInfo = {
        type: 'GET', // 'GET' 和 'POST'
        url: 'https://passport.zhihuishu.com/login?pwd=14879fa7bec2438082d98034ed323e10&service=http://online.zhihuishu.com/onlineSchool/', // 'https://www.taobao.com/detail'
        data: ' ', //a=1&b=2&c=3...
        token: 'c69c4328-4704-487d-b174-ca1582dd018c' //滑动验证的token
    }


    //保存domReady的事件队列
    var eventQueue = [];

    //判断DOM是否加载完毕
    var isDOMReady = false;

    //判断DOMReady是否绑定
    var isBind = false;

    function getElementsByClassName(fatherId, tagName, className) {
        node = fatherId && document.getElementById(fatherId) || document;
        tagName = tagName || "*";
        className = className.split(" ");
        var classNameLength = className.length;
        for (var i = 0, j = classNameLength; i < j; i++) {
            //创建匹配类名的正则
            className[i] = new RegExp("(^|\\s)" + className[i].replace(/\-/g, "\\-") + "(\\s|$)");
        }
        var elements = node.getElementsByTagName(tagName);
        var result = [];
        for (var i = 0, j = elements.length, k = 0; i < j; i++) { //缓存length属性
            var element = elements[i];
            while (className[k++].test(element.className)) { //优化循环
                if (k === classNameLength) {
                    result[result.length] = element;
                    break;
                }
            }
            k = 0;
        }
        return result;
    }

    function domReady(fn) {
        if (isDOMReady) {

            fn.call(window);
        } else {
            eventQueue.push(fn);
        };

        bindReady();
    }

    function bindReady() {
        if (isDOMReady) return;
        if (isBind) return;
        isBind = true;

        if (window.addEventListener) {
            document.addEventListener('DOMContentLoaded', execFn, false);
        } else if (window.attachEvent) {
            doScroll();
        };
    }


    function doScroll() {
        console.log("doScroll");
        try {
            document.documentElement.doScroll('left');
        } catch (error) {
            console.log("doScroll error");
            return setTimeout(doScroll, 20);
        };
        execFn();
    }


    function execFn() {
        if (!isDOMReady) {
            console.log("domReady");
            isDOMReady = true;
            for (var i = 0; i < eventQueue.length; i++) {
                eventQueue[i].call(window);
            };
            eventQueue = [];
        };
    }

    function combineUrl(parsedUrl) {
        return parsedUrl.base + parsedUrl.search + parsedUrl.hash;

    }


    function parseURL(url) {

        var search_index = url.indexOf('?'),
            hash_index = url.indexOf('#');

        var base, search, hash;

        try{
            if (search_index < 0 || (hash_index > -1 && search_index > hash_index)){
                if (hash_index < 0){
                    base = url;
                    search = '';
                    hash = '';
                }else{
                    base = url.slice(0, hash_index);
                    search = '';
                    hash = url.slice(hash_index, url.length);
                }
                
            }else{
                if (hash_index < 0){
                    base = url.slice(0, search_index);
                    search = url.slice(search_index, url.length);
                    hash = '';
                }else{
                    base = url.slice(0, search_index);
                    search = url.slice(search_index, hash_index);
                    hash = url.slice(hash_index, url.length);
                }
            }
        }catch(e){
            base = url;
            search = '';
            hash = '';
        }


        return {
            base: base,
            search: search,
            hash: hash,
            original: url
        }

    }

    // function parseQuery(qstr) {
    //     if (qstr.replace(/(^\s*)|(\s*$)/g, "").length === 0) {
    //         return {};
    //     }
    //     var query = {};
    //     var a = qstr.split('&');
    //     for (var i = 0; i < a.length; i++) {
    //         var b = a[i].split('=');
    //         query[decodeURIComponent(b[0])] = decodeURIComponent(b[1] || '');
    //     }
    //     return query;
    // }

    function parseQuery(qstr) {
        if (qstr.charAt(0) != '?') {
            return {};
        }
        var query = {};
        var a = qstr.substr(1).split('&');
        for (var i = 0; i < a.length; i++) {
            var b = a[i].split('=');
            console.log(decodeURIComponent(b[0]))
            if (decodeURIComponent(b[0]) !== 'u_atype' && decodeURIComponent(b[0]) !== 'u_asec'){
                query[decodeURIComponent(b[0])] = decodeURIComponent(b[1] || '');
            }
            
        }
        return query;
    }

    function addQuery(query, data) {
        var qdata = parseQuery(query);
        var rt = '?';
        for (var i in data) {
            qdata[i] = data[i];
        }
        for (var i in qdata) {
            rt += encodeURIComponent(i) + '=' + encodeURIComponent(qdata[i]) + '&';
        }
        rt = rt.substr(0 , rt.length - 1);
        return rt;
    }


    function parseFormQuery(qstr) {
        if (qstr.length === 0 || qstr.indexOf('=') < 0){
            return [];
        }
        
        var formItems = [];
        var a = qstr.split('&');
        for (var i = 0; i < a.length; i++) {
            var b = a[i].split('=');
            var str = '<input type="hidden" name="' + b[0] + '" value="' + b[1] + '" />'
            formItems.push(str);
        }
        return formItems;
    }


    function reform(data) {
        var form = document.createElement('form');
        var parsedUrl = parseURL(requestInfo.url);
        parsedUrl.search = addQuery(parsedUrl.search,data)
        var newUrl = combineUrl(parsedUrl);
        form.action = newUrl;
        form.method = "POST";
        form.innerHTML = parseFormQuery(requestInfo.data).join('');
        document.body.appendChild(form);
        form.submit();
        // document.body.appendChild(form);
    }

    </script>    
    <style>
    #block {
        position: fixed;
        _position: absolute;
        width: 100%;
        height: 100%;
        top: 0;
        bottom: 0;
        left: 0;
    }
    
    .mask {
        background: #f8f8f8;
        opacity: 0.5;
        filter: alpha(opacity=50);
        width: 100%;
        height: 100%;
    }
    
    .pop {
        z-index: 11;
        width: 200px;
        height: 100px;
        margin-left: -100px;
        margin-top: -50px;
        top: 50%;
        left: 50%;
        position: absolute;
        background: #fff;
        color: #000;
        text-align: center;
        padding-top: 20px;
    }
    
    .pop button {
        width: 80px;
        height: 30px;
        margin: 0 auto;
    }
    
    .waf-nc-wrapper {
        width: 480px;
        height: 254px;
        position: absolute;
        top: 50%;
        left: 50%;
        margin-top: -127px;
        margin-left: -240px;
        background: #ffffff;
        border: 3px solid #00A2CA;
    }
    
    .waf-nc-icon {
        position: absolute;
        top: 18px;
        left: 20px;
    }
    
    .waf-nc-title {
        margin-top: 23px;
        margin-left: 47px;
        font-size: 16px;
        color: #333333;
        line-height: 10px;
        text-align: left;
    }
    
    .waf-nc-splitter {
        margin-left: 26px;
        margin-top: 5px;
        width: 430px;
        height: 0px;
        border: 1px solid #f4f4f4;
    }
    
    .waf-nc-description {
        margin-top: 22px;
        margin-left: 23px;
        font-size: 12px;
        color: #333333;
    }
    
    #nocaptcha {
        margin-top: 20px;
        margin-left: 92px;
        width: 300px;
        height36px;
    }



    /* H5 */
    #waf_nc_h5_block {
        position: fixed;
        _position: absolute;
        width: 100%;
        height: 100%;
        top: 0;
        bottom: 0;
        left: 0;
        z-index: 9999
    }
    
    .waf-nc-h5-mask {
        background: #777;
        opacity: 0.5;
        filter: alpha(opacity=50);
        width: 100%;
        height: 100%
    }
    
    .waf-nc-h5-wrapper {
        width: 94%;
        position: absolute;
        top: 50%;
        left: 50%;
        margin-top: -20%;
        margin-left: -47%;
        padding: 5% 1%;
        background: #ffffff;
        border-radius: 3px;
        box-sizing: border-box
    }
    
    .waf-nc-h5-panel {
        width: 100%
    }
    
    .waf-nc-h5-icon {
        display: inline-block;
        margin-right: 3%;
        margin-left: 2%;
        line-height: 12%;
        vertical-align: top
    }
    
    .waf-nc-h5-description {
        width: 70%;
        display: inline-block;
        font-size: 15px
    }
    
    .waf-nc-h5-hr {
        border: none;
        border-bottom: 1px solid #ccc;
        margin: 0.5em;
    }
    </style>
</head>

<body>
    <div id="block" style="display: none;">
        <div class="mask"></div>
        <div id="_umfp" style="display:inline;width:1px;height:1px;overflow:hidden"></div>
        <div id="WAF_NC_WRAPPER" class="waf-nc-wrapper">
            <img class="waf-nc-icon" src="//img.alicdn.com/tps/TB1_3FrKVXXXXbdXXXXXXXXXXXX-129-128.png" alt="" width="20">
            <p class="waf-nc-title">安全验证</p>
            <div class="waf-nc-splitter"></div>
            <p class="waf-nc-description">请完成以下验证后继续操作：</p>
            <div id="nocaptcha"></div>
        </div>
    </div>
    <div id="waf_nc_h5_block" style="display: none;">
        <div class="waf-nc-h5-mask"></div>
        <div id="WAF_NC_H5_WRAPPER" class="waf-nc-h5-wrapper">
            <div class="waf-nc-h5-panel"><img class="waf-nc-h5-icon" src="//img.alicdn.com/tps/TB1zmO_LXXXXXcBXFXXXXXXXXXX-200-200.png" alt="" height="12%" width="12%">
                <div class="waf-nc-h5-description">经检测你当前操作环境存在风险，请完成以下验证</div>
            </div>
            <hr class="waf-nc-h5-hr">
            <div id="h5_nocaptcha" class="nc-container" data-nc-idx="1"></div>
        </div>
    </div>
    <script type="text/javascript">

    var NC_Opt = {
        renderTo: "nocaptcha", //渲染到DOM ID
        cssUrl: "//g.alicdn.com/sd/ncpc/nc.css",
        appkey: "NND3", // 应用标识
        token: requestInfo.token, //umid token
        is_Opt: "", //是否自己配置collina
        language: "cn", //语言包，默认中文
        isEnabled: true,
        times: 3,
        scene: "register",
        callback: function(data) {
            var wrapper = document.getElementById('WAF_NC_WRAPPER');
            wrapper.style.height = '260px';
            window.console && console.log("success");
            window.console && console.log(data);
            if (requestInfo.type === 'GET'){
                var d = {
                    u_atype: 4,
                    u_atoken: data.token,
                    u_asession: data.csessionid,
                    u_asig: data.sig
                };
                // location.href = requestInfo.url + addQuery(requestInfo.data, d);
                var parsedUrl = parseURL(requestInfo.url);
                parsedUrl.search = addQuery(parsedUrl.search,d)
                // location.href = combineUrl(parsedUrl);
                location.replace(combineUrl(parsedUrl));
            }else{
                var d = {
                    u_atype: 5,
                    u_atoken: data.token,
                    u_asession: data.csessionid,
                    u_asig: data.sig
                };
                reform(d);
            }
        },
        error: function(s) {
            window.console && console.log("error");
            window.console && console.log(s);
        },
        umidServer: "r" //r 日常 , h 杭州 ， m 美国 。 默认/不填 r
    };

    var NC_h5_Opt = {
        renderTo: "#h5_nocaptcha",
        appkey: "NND3",
        token: requestInfo.token, 
        trans: {
            "key1": "code200"
        },
        inline: true,
        times: 3,
        scene: "register_h5",
        is_Opt: "", //是否自己配置collina
        language: "cn", //语言包，默认中文
        callback: function(data) {
            window.console && console.log("success");
            window.console && console.log(data);
            if (data.token === undefined) data.token = requestInfo.token;
            if (requestInfo.type === 'GET'){
                var d = {
                    u_atype: 4,
                    u_atoken: data.token,
                    u_asession: data.csessionid,
                    u_asig: data.sig
                };
                // location.href = requestInfo.url + addQuery(requestInfo.data, d);
                var parsedUrl = parseURL(requestInfo.url);
                parsedUrl.search = addQuery(parsedUrl.search,d)
                // location.href = combineUrl(parsedUrl);
                location.replace(combineUrl(parsedUrl));
            }else{
                var d = {
                    u_atype: 5,
                    u_atoken: data.token,
                    u_asession: data.csessionid,
                    u_asig: data.sig
                };
                reform(d);
            }
        },
        error: function(s) {
            window.console && console.log("error");
            window.console && console.log(s);
        },
        umidServer: "r" //r 日常 , h 杭州 ， m 美国 。 默认/不填 r
    };

    function initNC() {
        if (window._waf_is_mobile){
            document.getElementById('waf_nc_h5_block').style.display = 'block';
            NoCaptcha.init(NC_h5_Opt);
            NoCaptcha.setEnabled(true);
        }else{
            document.getElementById('block').style.display = 'block';
            var nc = new noCaptcha(NC_Opt);
            nc.on('afterverify', function() {
                var wrapper = document.getElementById('WAF_NC_WRAPPER');
                console.log('afterverify');
                if (getElementsByClassName('WAF_NC_WRAPPER', 'div', 'clickCaptcha').length > 0) {
                    wrapper.style.height = '450px';
                }
            });
        }
        

    }

    function insertScripts(){
        var script = document.createElement('script');
        var time = new Date();
        var head = document.head || document.getElementsByTagName('head')[0];
        if (_waf_is_mobile){
            script.src = '//g.alicdn.com/sd/nch5/index.js?t=' + (time.getFullYear()+(time.getMonth()+1)+time.getDate()+time.getHours());
        }else{
            script.src = '//g.alicdn.com/sd/ncpc/nc.js?t=' + (time.getFullYear()+(time.getMonth()+1)+time.getDate()+time.getHours());
        }
        if ("onload" in script) {
            script.onload = function(){
                initNC();
            }
        } else {
            script.onreadystatechange = function() {
                if (/loaded|complete/.test(script.readyState)) {
                    initNC();
                }
            };
        }
        head.appendChild(script);
    }

    domReady(insertScripts);


    </script>
</body>

</html>

